{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "63978c86",
   "metadata": {},
   "source": [
    "## Calculating asset returns using pandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "bdc2a5d1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from IPython.display import display\n",
    "from openbb import obb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5606d1fd",
   "metadata": {},
   "outputs": [],
   "source": [
    "obb.user.preferences.output_type = \"dataframe\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c276ba20",
   "metadata": {},
   "source": [
    "Fetches historical price data for the equity \"AAPL\" using the \"yfinance\" provider and stores it in 'data'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "d8e83526",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = obb.equity.price.historical(\"AAPL\", provider=\"yfinance\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9af1ac24",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "      <th>split_ratio</th>\n",
       "      <th>dividend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2023-06-15</th>\n",
       "      <td>183.960007</td>\n",
       "      <td>186.520004</td>\n",
       "      <td>183.779999</td>\n",
       "      <td>186.009995</td>\n",
       "      <td>65433200</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-16</th>\n",
       "      <td>186.729996</td>\n",
       "      <td>186.990005</td>\n",
       "      <td>184.270004</td>\n",
       "      <td>184.919998</td>\n",
       "      <td>101235600</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-20</th>\n",
       "      <td>184.410004</td>\n",
       "      <td>186.100006</td>\n",
       "      <td>184.410004</td>\n",
       "      <td>185.009995</td>\n",
       "      <td>49799100</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-21</th>\n",
       "      <td>184.899994</td>\n",
       "      <td>185.410004</td>\n",
       "      <td>182.589996</td>\n",
       "      <td>183.960007</td>\n",
       "      <td>49515700</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-22</th>\n",
       "      <td>183.740005</td>\n",
       "      <td>187.050003</td>\n",
       "      <td>183.669998</td>\n",
       "      <td>187.000000</td>\n",
       "      <td>51245300</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-10</th>\n",
       "      <td>196.899994</td>\n",
       "      <td>197.300003</td>\n",
       "      <td>192.149994</td>\n",
       "      <td>193.119995</td>\n",
       "      <td>97262100</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-11</th>\n",
       "      <td>193.649994</td>\n",
       "      <td>207.160004</td>\n",
       "      <td>193.630005</td>\n",
       "      <td>207.149994</td>\n",
       "      <td>172373300</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-12</th>\n",
       "      <td>207.369995</td>\n",
       "      <td>220.199997</td>\n",
       "      <td>206.899994</td>\n",
       "      <td>213.070007</td>\n",
       "      <td>198134300</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-13</th>\n",
       "      <td>214.740005</td>\n",
       "      <td>216.750000</td>\n",
       "      <td>211.600006</td>\n",
       "      <td>214.240005</td>\n",
       "      <td>97862700</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-14</th>\n",
       "      <td>213.850006</td>\n",
       "      <td>215.169998</td>\n",
       "      <td>211.300003</td>\n",
       "      <td>212.490005</td>\n",
       "      <td>69175600</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  open        high         low       close     volume  \\\n",
       "date                                                                    \n",
       "2023-06-15  183.960007  186.520004  183.779999  186.009995   65433200   \n",
       "2023-06-16  186.729996  186.990005  184.270004  184.919998  101235600   \n",
       "2023-06-20  184.410004  186.100006  184.410004  185.009995   49799100   \n",
       "2023-06-21  184.899994  185.410004  182.589996  183.960007   49515700   \n",
       "2023-06-22  183.740005  187.050003  183.669998  187.000000   51245300   \n",
       "...                ...         ...         ...         ...        ...   \n",
       "2024-06-10  196.899994  197.300003  192.149994  193.119995   97262100   \n",
       "2024-06-11  193.649994  207.160004  193.630005  207.149994  172373300   \n",
       "2024-06-12  207.369995  220.199997  206.899994  213.070007  198134300   \n",
       "2024-06-13  214.740005  216.750000  211.600006  214.240005   97862700   \n",
       "2024-06-14  213.850006  215.169998  211.300003  212.490005   69175600   \n",
       "\n",
       "            split_ratio  dividend  \n",
       "date                               \n",
       "2023-06-15          0.0       0.0  \n",
       "2023-06-16          0.0       0.0  \n",
       "2023-06-20          0.0       0.0  \n",
       "2023-06-21          0.0       0.0  \n",
       "2023-06-22          0.0       0.0  \n",
       "...                 ...       ...  \n",
       "2024-06-10          0.0       0.0  \n",
       "2024-06-11          0.0       0.0  \n",
       "2024-06-12          0.0       0.0  \n",
       "2024-06-13          0.0       0.0  \n",
       "2024-06-14          0.0       0.0  \n",
       "\n",
       "[252 rows x 7 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "809ae5dc",
   "metadata": {},
   "source": [
    "Uses location-based indexing to select the 'close' column and keep it as a DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "aa12df88",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = data.loc[:, [\"close\"]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9b1c7727",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>close</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2023-06-15</th>\n",
       "      <td>186.009995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-16</th>\n",
       "      <td>184.919998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-20</th>\n",
       "      <td>185.009995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-21</th>\n",
       "      <td>183.960007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-22</th>\n",
       "      <td>187.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-10</th>\n",
       "      <td>193.119995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-11</th>\n",
       "      <td>207.149994</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-12</th>\n",
       "      <td>213.070007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-13</th>\n",
       "      <td>214.240005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-14</th>\n",
       "      <td>212.490005</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 close\n",
       "date                  \n",
       "2023-06-15  186.009995\n",
       "2023-06-16  184.919998\n",
       "2023-06-20  185.009995\n",
       "2023-06-21  183.960007\n",
       "2023-06-22  187.000000\n",
       "...                ...\n",
       "2024-06-10  193.119995\n",
       "2024-06-11  207.149994\n",
       "2024-06-12  213.070007\n",
       "2024-06-13  214.240005\n",
       "2024-06-14  212.490005\n",
       "\n",
       "[252 rows x 1 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "907df1f7",
   "metadata": {},
   "source": [
    "Adds a new column 'simple' that contains the simple percentage change of the 'close' prices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0a377a75",
   "metadata": {},
   "outputs": [],
   "source": [
    "df[\"simple\"] = df[\"close\"].pct_change()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "45f5445a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>close</th>\n",
       "      <th>simple</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2023-06-15</th>\n",
       "      <td>186.009995</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-16</th>\n",
       "      <td>184.919998</td>\n",
       "      <td>-0.005860</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-20</th>\n",
       "      <td>185.009995</td>\n",
       "      <td>0.000487</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-21</th>\n",
       "      <td>183.960007</td>\n",
       "      <td>-0.005675</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-22</th>\n",
       "      <td>187.000000</td>\n",
       "      <td>0.016525</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-10</th>\n",
       "      <td>193.119995</td>\n",
       "      <td>-0.019148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-11</th>\n",
       "      <td>207.149994</td>\n",
       "      <td>0.072649</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-12</th>\n",
       "      <td>213.070007</td>\n",
       "      <td>0.028578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-13</th>\n",
       "      <td>214.240005</td>\n",
       "      <td>0.005491</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-14</th>\n",
       "      <td>212.490005</td>\n",
       "      <td>-0.008168</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 close    simple\n",
       "date                            \n",
       "2023-06-15  186.009995       NaN\n",
       "2023-06-16  184.919998 -0.005860\n",
       "2023-06-20  185.009995  0.000487\n",
       "2023-06-21  183.960007 -0.005675\n",
       "2023-06-22  187.000000  0.016525\n",
       "...                ...       ...\n",
       "2024-06-10  193.119995 -0.019148\n",
       "2024-06-11  207.149994  0.072649\n",
       "2024-06-12  213.070007  0.028578\n",
       "2024-06-13  214.240005  0.005491\n",
       "2024-06-14  212.490005 -0.008168\n",
       "\n",
       "[252 rows x 2 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "526b50a6",
   "metadata": {},
   "source": [
    "Adds a new column 'compound' that contains the compound returns of the 'close' prices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "fb03512a",
   "metadata": {},
   "outputs": [],
   "source": [
    "df[\"compound\"] = np.log(df[\"close\"] / df[\"close\"].shift())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "1e088f32",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>close</th>\n",
       "      <th>simple</th>\n",
       "      <th>compound</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2023-06-15</th>\n",
       "      <td>186.009995</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-16</th>\n",
       "      <td>184.919998</td>\n",
       "      <td>-0.005860</td>\n",
       "      <td>-0.005877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-20</th>\n",
       "      <td>185.009995</td>\n",
       "      <td>0.000487</td>\n",
       "      <td>0.000487</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-21</th>\n",
       "      <td>183.960007</td>\n",
       "      <td>-0.005675</td>\n",
       "      <td>-0.005691</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-06-22</th>\n",
       "      <td>187.000000</td>\n",
       "      <td>0.016525</td>\n",
       "      <td>0.016390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-10</th>\n",
       "      <td>193.119995</td>\n",
       "      <td>-0.019148</td>\n",
       "      <td>-0.019333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-11</th>\n",
       "      <td>207.149994</td>\n",
       "      <td>0.072649</td>\n",
       "      <td>0.070131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-12</th>\n",
       "      <td>213.070007</td>\n",
       "      <td>0.028578</td>\n",
       "      <td>0.028178</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-13</th>\n",
       "      <td>214.240005</td>\n",
       "      <td>0.005491</td>\n",
       "      <td>0.005476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2024-06-14</th>\n",
       "      <td>212.490005</td>\n",
       "      <td>-0.008168</td>\n",
       "      <td>-0.008202</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 close    simple  compound\n",
       "date                                      \n",
       "2023-06-15  186.009995       NaN       NaN\n",
       "2023-06-16  184.919998 -0.005860 -0.005877\n",
       "2023-06-20  185.009995  0.000487  0.000487\n",
       "2023-06-21  183.960007 -0.005675 -0.005691\n",
       "2023-06-22  187.000000  0.016525  0.016390\n",
       "...                ...       ...       ...\n",
       "2024-06-10  193.119995 -0.019148 -0.019333\n",
       "2024-06-11  207.149994  0.072649  0.070131\n",
       "2024-06-12  213.070007  0.028578  0.028178\n",
       "2024-06-13  214.240005  0.005491  0.005476\n",
       "2024-06-14  212.490005 -0.008168 -0.008202\n",
       "\n",
       "[252 rows x 3 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d18773c",
   "metadata": {},
   "source": [
    "Calculates the percentage change of the 'close' prices over a 3-period window"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e1681fb1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "date\n",
       "2023-06-15         NaN\n",
       "2023-06-16         NaN\n",
       "2023-06-20         NaN\n",
       "2023-06-21   -0.011021\n",
       "2023-06-22    0.011248\n",
       "                ...   \n",
       "2024-06-10   -0.014040\n",
       "2024-06-11    0.065148\n",
       "2024-06-12    0.082178\n",
       "2024-06-13    0.109362\n",
       "2024-06-14    0.025778\n",
       "Name: close, Length: 252, dtype: float64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"close\"].pct_change(periods=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1726edd7",
   "metadata": {},
   "source": [
    "Converts the index to datetime and calculates the monthly percentage change of the 'close' prices, dropping any missing values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "01dec623",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "date\n",
       "2023-06-30    0.042793\n",
       "2023-07-31    0.012785\n",
       "2023-08-31   -0.043675\n",
       "2023-10-31   -0.017151\n",
       "2023-11-30    0.112315\n",
       "2024-01-31   -0.006680\n",
       "2024-02-29   -0.019794\n",
       "2024-04-30    0.001764\n",
       "2024-05-31    0.128691\n",
       "Name: close, dtype: float64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index = pd.to_datetime(df.index)\n",
    "df[\"close\"].pct_change(freq=\"ME\").dropna()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "300754f1",
   "metadata": {},
   "source": [
    "**Jason Strimpel** is the founder of <a href='https://pyquantnews.com/'>PyQuant News</a> and co-founder of <a href='https://www.tradeblotter.io/'>Trade Blotter</a>. His career in algorithmic trading spans 20+ years. He previously traded for a Chicago-based hedge fund, was a risk manager at JPMorgan, and managed production risk technology for an energy derivatives trading firm in London. In Singapore, he served as APAC CIO for an agricultural trading firm and built the data science team for a global metals trading firm. Jason holds degrees in Finance and Economics and a Master's in Quantitative Finance from the Illinois Institute of Technology. His career spans America, Europe, and Asia. He shares his expertise through the <a href='https://pyquantnews.com/subscribe-to-the-pyquant-newsletter/'>PyQuant Newsletter</a>, social media, and has taught over 1,000+ algorithmic trading with Python in his popular course **<a href='https://gettingstartedwithpythonforquantfinance.com/'>Getting Started With Python for Quant Finance</a>**. All code is for educational purposes only. Nothing provided here is financial advise. Use at your own risk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0806f2e0-a0d7-47e7-9a55-dffe35d5e620",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "jupytext": {
   "cell_metadata_filter": "-all",
   "main_language": "python",
   "notebook_metadata_filter": "-all"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
